package com.xxx.exception;

/**
 * @version v1.0
 * @Description:
 * @Author zhanzhongxin
 * @Date 2021/7/16 10:22
 * @Copyright 博为峰
 */

/*
   1.throw在方法体抛异常对象
   2.throws在方法的声明处抛出异常类，可以抛出多个（用逗号隔开）

   异常分类:
   1.编译时被检测异常(编译时异常):
     Exception及其子类（除去RuntimeException及其子类），这种异常在编译时被检测，可以进行相应的处理
   2.编译时不检测异常(运行时异常):RuntimeException及其子类，这种异常直接编译通过，在运行时发生，无法让程序继续运行

 */
public class ExceptionDemo02 {
    public static void main(String[] args) throws FxException{
        int[] arr = new int[5];
//        System.out.println(arr[5]);
//        arr = null;
        method(arr, -1);

//        new Thread().join(1,2);
    }

    public static void method(int[] arr, int index) throws FxException {
        if (arr == null) {//空指针
            throw new NullPointerException("空指针异常");
        }

        if (index >= arr.length) {//下标越界
            throw new ArrayIndexOutOfBoundsException("下标越界异常");
        }

        if (index < 0) {
            throw new FxException("不能传负数");
        }
        System.out.println(arr[index]);
        System.out.println("abc");
    }
}
